package leetcode_ago.string_and_array;

/**
 * 给你两个版本号 version1 和 version2 ，请你比较它们。
 * 版本号由一个或多个修订号组成，各修订号由一个'.'连接。每个修订号由多位数字组成，可能包含 前导零.
 * 每个版本号至少包含一个字符。修订号从左到右编号，下标从 0 开始，最左边的修订号下标为 0 ，下一个修订号下标为 1 ，以此类推。
 * 例如，2.5.33 和 0.1 都是有效的版本号
 */
public class Num165_CompatrVersion {
    //双指针-在分割版本号的同时解析出修订号进行比较
    public int compareVersion(String version1, String version2) {
        //取得版本号的长度(含有要比较的数字及“.”)
        int n=version1.length();
        int m=version2.length();
        int i=0,j=0;
        while(i<n||j<m){//利用i,j向后依次遍历两个版本号各个位置的字符
            int x=0;//用x记录每次”.“分隔开的数字大小
            for(;i<n&&(version1.charAt(i)!='.');++i){
                //x记录在'.'之前的数值大小
                x=x*10+version1.charAt(i)-'0';//charAt()-'0'是为了把字符转换为数字
            }
            //此时到达'.'处，++i进行跳过此位置继续进行后面的判断
            ++i;
            int y=0;
            for(;j<m&&version2.charAt(j)!='.';++j){
                y=y*10+version2.charAt(j)-'0';
            }
            ++j;
            if(x!=y){
                return x>y?1:-1;
            }
        }
        return 0;
    }
}
